Systems and methods of selection, characterization and automated sequencing of media content

ABSTRACT

In a computer system having at least one output device, a set of media programs is accessed. A playlist first portion including a first plurality of the media programs of the set is created. The programs of the first portion are arranged with respect to one another according to a respective first characteristic value of each of the programs of the first portion.

This application is a continuation of U.S. patent application Ser. No.11/109,455 filed on Apr. 18, 2005 and claims priority to U.S.Provisional Application No. 60/564,157 filed Apr. 20, 2004, which areincorporated by reference in their entireties as if fully set forthherein.

BACKGROUND

From the time that gramophone recordings were first sold to the publicuntil the distribution of music recordings became dominated by Internetdownload technology, users have organized their collections of musicrecordings simply by organizing the media objects themselves—78s, 45singles, 33⅓ long play albums, 8-track tape cartridges, cassette tapes,and compact disks—and by mechanically placing these physical objectsinto a playback machine in a sequence. By placing many songs on a singlerecording medium, the recording industry provided an intermediate levelof organization with 20 minutes to 45 minutes of music recordings in asequence recorded on the recording media.

However, with the advent of digital file-sharing and similar services,audiophiles are now acquiring large numbers of individual musicrecordings of one to five minutes in length. Because hard disk storagehas become inexpensive, audiophiles are building libraries of thousandsof these recordings. The intermediate level of organization previouslyprovided by the recording industry is not available.

The listener must make approximately 15 to 30 selection decisions foreach hour of music played.

SUMMARY

According to an embodiment of the invention, in a computer system havingat least one output device, a set of media programs is accessed. Aplaylist first portion including a first plurality of the media programsof the set is created. The programs of the first portion are arrangedwith respect to one another according to a respective firstcharacteristic value of each of the programs of the first portion.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic view of an exemplary operating environment inwhich an embodiment of the invention can be implemented;

FIG. 2 is a functional block diagram of a system according to anembodiment of the invention;

FIG. 3 is a schematic view of a first graphical user interface (GUI)according to an embodiment of the invention;

FIG. 4 is a graphical illustration of listening cycles according to anembodiment of the invention;

FIG. 5 is a schematic view of a second GUI according to an embodiment ofthe invention;

FIG. 6 is a flow diagram illustrating a first method according to anembodiment of the invention; and

FIG. 7 is a flow diagram illustrating a second method according to anembodiment of the invention.

DETAILED DESCRIPTION

An embodiment of the invention described herein includes a system forlistener characterization of music recordings and automated playselection. The music recordings may be stored in a library. Eachrecording has associated metadata consisting of attributes thatcharacterize the recording, and the metadata may be stored in a databasecomponent. The system includes a sophisticated search engine that cansearch the database for values of each attribute for each recording tofind recordings of interest. As an adjunct to the search engine, thesystem includes a component that selects a list of recordings to beplayed, called a “playlist”. Another component of the system, called a“composer”, automatically organizes recordings in the play list into apreferred play order.

The system includes a player component that can cause the recordings ofthe selected play order to be played from the library through audioreproduction components. The system includes a component for selectingone or more images to be stored in association with each audiorecording. The images can be displayed on a video display while themusic is playing or printed.

Instead of playing the recordings of a play list in real time, therecording data may be copied to another recording medium, such as acompact disk (CD) through use of a CD “burner”. While the recordings arebeing burned to a CD, the system can print labels for the CD and for ajewel case to surround the CD by automatically copying titles and otherattributes from the database to a printer. At the same time, this systemcan automatically take images associated with one or more of therecordings being burned and print the images on the disk label or jewelcase label.

An important component of the system is the component that selects aplay order from a play list. Without this component, the user must makeall of the sequence decisions, roughly 15 to 30 decisions for each hourof music. If the user must make these decisions without computerassistance, enough time, effort, and thoughtful consideration isrequired that, once a play list has been selected and placed into a playorder, the user will be motivated to hear that play list over and overrather than invest the time in selecting a new play list and placing itinto a desired play order. Consequently, an automated system that canquickly place any play list into a desirable play order has considerablevalue for the consumer.

To place a play list into a play order, each recording in the play listmust have metadata attributes (“profiles”) that can be used by thecomposer component. There are prior art systems where such attributesare selected and values are assigned for each attribute by a musicexpert. By this process, the expertise of the expert is placed into acomputerized expert system. However, the experts do not agree on howmusic recordings should be characterized, either to determine theimportant attributes or to set values for each attribute. Further, eachindividual listener will have his own tastes, preferences, values, andprejudices for characterization of music recordings.

The system solves the lack of congruity between the characterizationsgiven by any expert and the characterizations that a particular listenerwould be inclined to use by allowing the user to make all of thecharacterizations and then using the user's characterizations in thecomposer. Provided the user is consistent when assigningcharacterizations to music recordings, the problem of lack of congruitybetween the characterizations given by an expert and thecharacterizations that the user would give is eliminated. It does notmatter whether the words chosen by the user for characterizing arecording would have the same meaning for another person that they havefor the user—all that is required is that the user be consistent. Then,when the user specifies a characterization for a database search or forplay list selection or for input to the composer, these components ofthe system will work well together. The user can use words with ameaning that is quite different from conventional meanings, or evenopposite from conventional meanings, or misspelled or made up words. Thesystem will still work as intended provided the user applies these wordsconsistently. In this sense, the user can be his own lexicographer.

The system can also be enhanced with an additional module for users whodo not want to take the time to assign their own characterizations toeach piece of music they add to their library. Instead, the user candownload across a network metadata characterizations (“profiles”) givento pieces of music by another person who publishes the profiles on thenetwork. The user can download an entire library of music recordingsthat have been selected and characterized by the publisher or the usercan select music recordings one at a time by browsing a database offeredby the publisher. The user can subscribe to an announcement service fromthe publisher to receive offers of new music that the publisher hasrecently profiled for addition to the user's library.

FIG. 1 illustrates an example of a suitable computing system environment100 on which the invention may be implemented. The computing systemenvironment 100 is only one example of a suitable computing environmentand is not intended to suggest any limitation as to the scope of use orfunctionality of the invention. Neither should the computing environment100 be interpreted as having any dependency or requirement relating toany one or combination of components illustrated in the exemplaryoperating environment 100.

Embodiments of the invention are operational with numerous other generalpurpose or special purpose computing system environments orconfigurations. Examples of well known computing systems, environments,and/or configurations that may be suitable for use with the inventioninclude, but are not limited to, personal computers, server computers,hand-held or laptop devices, multiprocessor systems,microprocessor-based systems, set top boxes, programmable consumerelectronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like.

The invention may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc. that performparticular tasks or implement particular abstract data types. Theinvention may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer storage media including memory storage devices.

With reference to FIG. 1, an exemplary system for implementing theinvention includes a computing device, such as computing device 100. Inits most basic configuration, computing device 100 typically includes atleast one processing unit 102 and memory 104.

Depending on the exact configuration and type of computing device,memory 104 may be volatile (such as RAM), non-volatile (such as ROM,flash memory, etc.) or some combination of the two. This most basicconfiguration is illustrated in FIG. 1 by dashed line 106.

Additionally, device 100 may have additional features/functionality. Forexample, device 100 may also include additional storage (removableand/or non-removable) including, but not limited to, magnetic or opticaldisks or tape. Such additional storage is illustrated in FIG. 1 byremovable storage 108 and non-removable storage 110. Computer storagemedia includes volatile and nonvolatile, removable and non-removablemedia implemented in any method or technology for storage of informationsuch as computer readable instructions, data structures, program modulesor other data. Memory 104, removable storage 108 and non-removablestorage 110 are all examples of computer storage media. Computer storagemedia includes, but is not limited to, RAM, ROM, EEPROM, flash memory orother memory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can accessed bydevice 100. Any such computer storage media may be part of device 100.

Device 100 may also contain communications connection(s) 112 that allowthe device to communicate with other devices. Communicationsconnection(s) 112 is an example of communication media. Communicationmedia typically embodies computer readable instructions, datastructures, program modules or other data in a modulated data signalsuch as a carrier wave or other transport mechanism and includes anyinformation delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media includes wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared and other wireless media. The term computerreadable media as used herein includes both storage media andcommunication media.

Device 100 may also have input device(s) 114 such as keyboard, mouse,pen, voice input device, touch input device, etc. Output device(s) 116such as a display, speakers, printer, etc. may also be included. Allthese devices are well know in the art and need not be discussed atlength here.

FIG. 2 illustrates a system 200 according to an embodiment of theinvention and delineated by a dashed line 202. In an embodiment, thesystem 200 includes a profiler module 210, a composer module 220 and alibrary editor module 230, each of which is stored in the memory 104. Inoperation, a user of the system 200 may access a set of audio files 240stored in the memory 104. The audio files 240 may be stored in anyappropriate format, such as MP3, .wav, and the like. Such access may bethrough a conventional interface (not shown) generated to the outputdevice 116 that allows the user to navigate through and select from amenu displaying, for example, the titles of and other informationassociated with the audio files 240. Using a pointer device (not shown)associated with the input device 114, the user may select an audio fileto profile, as described in greater detail below.

Upon selecting an audio file for profiling, a GUI 300, such as a dialogbox illustrated in FIG. 3, may be displayed on an output device 116,such as a conventional display device. In an embodiment, the GUI 300 isoperable to lead the user through a profiling interview in order toreceive the user's opinions concerning certain attributes of the songassociated with the selected audio file. For example, in the embodimentillustrated in FIG. 3, the GUI 300 includes a field 310 that displaysthe title and artist of the selected audio file and a set of playcontrols 320 that allow the user to listen to and analyze the selectedaudio file. The GUI 300 further functions to solicit from the user adetailed characterization of the song by having the user assign one ormore attribute descriptions to the song. For example, the user is askedto enter, via selection of radio buttons 330, his or her perceptionsconcerning the genre(s) to which the user believes the song to belong,the manner in which the song begins and ends, and the overall pacing andtempo of the song. In characterizing these attributes, the user maychoose from among several textual descriptions 340.

In a Genre1 selection menu 350, the user is asked to select the primarygenre to which the song belongs. The user may believe that the songbelongs to more than one genre. For example, a song belonging primarilyto the Country genre may have successfully crossed over to the Pop genreafter release. Accordingly, in a Genre2 selection menu 360, the user isgiven the option to select a secondary genre to which the song belongs.

In a Tempo selection menu 370, the user is asked to characterize theoverall tempo of the song. The Tempo selection may be based on theuser's perception of how fast or slow the music is. For example, if theuser perceives the tempo as easy or minimal, the user may select Slow.If the user perceives the tempo as bouncy or moderate, the user mayselect Medium. If the user perceives the tempo as energetic or extreme,the user may select Fast.

In a Pace selection menu 380, the user is asked to characterize theoverall pace of the song. The Pace selection may “fine tune” the Tempoattribute. For example, a song like Roberta Flak's “The First Time EverI Saw Your Face” may be perceived to have a slow tempo and relaxed pace,while the Dixie Chicks' “Wide Open Spaces” has a slow tempo but a morecasual pace. Furthermore, the Eagles'“Tequila Sunrise” may be perceivedto have a slow tempo with a more active pace than either one of theseother two songs. As such, the Pace attribute may be used to modify theTempo attribute up or down. For example, if the user perceives the paceas laid back or smooth, the user may select Relaxed. If the userperceives the pace as lively or leisurely, the user may select Casual.If the user perceives the pace as aggressive or rough, the user mayselect Active.

In a Start selection menu 390, the user is asked to characterize thebeginning of the song. For example, if the user perceives the beginningof the song to be quiet or consist of dialog, the user may select Fade.If the user perceives the beginning of the song to be smooth or easy,the user may select Soft. If the user perceives the beginning of thesong to be hard or strong, the user may select Hot.

In an End selection menu 395, the user is asked to characterize the endof the song. For example, if the user perceives the end of the song tobe gradual or consist of dialog, the user may select Fade. If the userperceives the end of the song to be smooth or easy, the user may selectSoft. If the user perceives the end of the song to be hard or intense,the user may select Cold. In an embodiment, the GUI 300 includes an Endbutton 396 that, when activated, plays a final song portion ofpredetermined length to allow the user to evaluate the song's ending.

In an embodiment, each of the selectable textual attribute descriptions340 corresponds to a numerical value that the profiler module 210 canuse to profile the song. The following provides an exemplary set ofattribute selections and corresponding numerical values employed by theprofiler module 210.

Tempo

User selection Numeric value Slow 40 Medium 80 Fast 120

Pace

User selection Numeric value Relaxed 5 Casual 15 Active 25

Start

User selection Numeric value Fade 5 Soft 1 Hot 7

End

User selection Numeric value Fade 5 Soft 1 Cold 10

In an embodiment of the invention, the values corresponding to theattributes selected by the user are added to yield a value characterizedas a perceived, but not necessarily actual, beats per minute (BPM) forthe song. The following illustrates exemplary profiling by a user of twodifferent songs:

Song A Tempo = Slow Value = 40 Pacing = Casual Value = 15 Start = SoftValue = 1 End = Fade Value = 5 Perceived BPM = 61 Song B Tempo = FastValue = 120 Pacing = Active Value = 25 Start = Soft Value = 1 End = FadeValue = 5 Perceived BPM = 151

The user can repeat this profiling interview process for each of theaudio files 240 stored in the memory 104. Alternatively, the user mayimport via the communication connection 112 over a network (not shown) aset of profiles, generated by another person or a commercial entity, forone or more of the audio files 240 stored in the memory 104. Onceprofiling has been applied to a song, the library editor 230 allows theuser to later search for and locate the song by searching one or more ofthese attributes. The library editor 230 may further allow the user toalter the profiling selections earlier applied to a given song.

Although the GUI 300 illustrated in FIG. 3 employs radio buttons toallow user selections, the GUI could instead or additionally employpop-up menus, pull-down menus, or any other suitable graphic dialoginterface allowing the user to make the desired choices.

Having profiled and generated a perceived-BPM value for stored audiofiles 240, the user may then choose to generate a playlist includingthese audio files using features associated with the composer module220. In an embodiment, the composer module 220 operates to generate theplaylist as a series of listening cycles.

As best illustrated in FIG. 4, a listening cycle 400 may be a period oftime within which a set of songs is arranged to be played in an ordergoverned by a song parameter that changes from song to song in aprogressive manner. For example, many people prefer that each listeningcycle start with a song having a low tempo and end with a song having ahigh tempo. This is commonly referred to as saw-tooth programming. Radiostations and other broadcasting entities employ human programmers toarrange a set of songs into a listening cycle. In radio broadcastingthis is typically a 20 minute cycle, the average time someone may be intheir car when traveling from point A to point B. For listeners at home,the preferred listening cycle may be 30 minutes to 60 minutes.

In an embodiment, the composer module 220 builds a playlist thataccelerates the BPM up until the end (high BPM) of a listening cycle andthen starts the acceleration over at the beginning (low BPM) of asuccessive listening cycle. Once a high tempo is reached within a cycle,the composer module 220 begins a new listening cycle from a low tempopoint. If a 60-minute listening cycle is selected, the BPM progressionoccurs over a 60-minute time frame. If a 30-minute listening cycle isselected, the BPM progression occurs over a 30-minute time frame.

The composer module 220 automates programming a play list based on theprofile of each audio track to be included in the playlist and thepredetermined listening cycle. The composer module 220 evaluates apotential playlist and breaks it down into listening cycles based on theselected length of the play list. Based on each track's profile, thecomposer module 220 then assigns each track to a specific positionwithin a listening cycle.

In operation, and as illustrated in FIG. 5, the user first invokes acomposer GUI 500 that, in an embodiment, allows the user to dictate themanner in which a playlist will be generated. For example, the GUI 500may provide an audio track selection menu 510 that allows the user toview the profiled audio tracks available for inclusion in the playlistand select at least a subset of these tracks (i.e., playlist pool) fromwhich the composer module 220 will draw in generating the playlist.

In an embodiment, the GUI 500 further provides a cycle-lengthradio-button menu 520, a genre radio-button menu 530, and an artistradio-button menu 540 that allow the user to select settings pertainingto the listening-cycle length and frequency of artist and genreappearance in the playlist. For example, the user's selection from thecycle-length menu 520 determines the listening cycle duration.

If the user chooses the “Alternate” setting in the artist menu 540, thecomposer module 220 will attempt to alternate artists as it positionseach track. This avoids having the same artist play back to back in theplay list. If the user chooses the “Group” setting in the artist menu540, the composer module 220 will attempt to group tracks from the sameartist together in the play list. The composer module 220 will deviatefrom the Group setting if the artist doesn't have an appropriate song inthe playlist in accordance with the desired BPM in the cycle. If theuser chooses the “Any Order” setting in the artist menu 540, thecomposer module 220 will disregard the artist when positioning tracks.

Similarly, if the user chooses the “Alternate” setting in the genre menu530, the composer module 220 will attempt to alternate genres as itpositions each track. This avoids having the same genre play back toback in the play list. If the user chooses the “Group” setting in thegenre menu 530, the composer module 220 will attempt to group tracksfrom the same genre together in the play list. The composer module 220will deviate from the Group setting if there is not an appropriate songfrom the genre in the playlist in accordance with the desired BPM in thecycle. If the user chooses the “Any Order” setting in the genre menu530, the composer module 220 will disregard the genre when positioningtracks.

For purposes of explaining the functioning of an embodiment of thecomposer module 220, the following terminology is used:

Tempo Value—The BPM of a music or audio file (song file) whetherperceived by a user of the system 200 or identified in some other mannerand input into the system 200 as a numeric value by a user.

Listening Cycle—Defined as a period of time (usually 20, 30 or 60minutes) that begins with a song file that represents a low numericTempo Value then ascends upward with each subsequent song file until theend of the Listening Cycle is reached.

Genre—An attribute category that identifies a song file as Rock, Pop,Classical, etc.

Genre ID—A specific Genre to be matched.

Collection—A group of song files selected by the user for the playlistpool, each of which has a Tempo Value.

Stdv—The standard deviation of the collection's Tempo Values asexpressed as a numeric value.

Process Cycle—The number of Listening Cycles which have been processed.

Global—The last value assigned to a variable value in the ListeningCycle.

Elapsed Time—The amount of time which has passed since the beginning ofthe Listening Cycle.

The composer module 220 arranges a collection of audio files 240selected by a user into a play order that conforms to the user-selectedlistening cycle. To achieve an acceptable listening cycle, the composermodule 220 first evaluates the entire collection from which the playlistwill be generated on a song by song basis. In an embodiment, thefollowing attributes of each song are evaluated and tabulated by theapplication.

1. Tempo Value (Beats Per Minute)

2. Artist

3. Genre

4. Vocals

5. Run Time

The composer module 220 may then create a collection profile whichconsists of the following:

1. Aggregate of all song file Run Times.

2. The number of song files.

3. The Average Run Time per song file.

4. The Average number of song files per hour.

5. The lowest song file Tempo Value in the collection.

6. The highest song file Tempo Value in the collection.

7. The mean (middle or median) song file Tempo Value in the collection.

8. The average song file Tempo Value in the collection

9. The number of unique Artists in the collection.

10. The number of Genres in the collection and the number song files ineach Genre.

11. The number of Male Vocals in the collection.

12. The number of Female vocals in the collection.

13. The number of Instrumentals in the collection.

The composer module 220 stores the above evaluation data in memory 104for referencing throughout the composition process.

After selecting the tracks to be included in the playlist, the user maythen select an “Evaluate” button 550 included by the GUI 500. Uponselecting the “Evaluate” button 550, the composer module 220 willevaluate the selected tracks to determine their composition and generatethe collection profile. The GUI 500 may then display the collectionprofile (not shown) to the user. After reviewing the collection profile,the user can select the artist, genre, and/or cycle-length optionsdescribed above and select a “Compose” button 560 included by the GUI500 to compose the playlist or select a “Cancel” button (not shown) toreturn to the track list to add or eliminate tracks from the playlistpool.

The composer module 220 creates listening cycles beginning with thefirst cycle and continuing until all song files from a collection havebeen assigned to a listening cycle. As many listening cycles asnecessary to utilize all song files in the collection can be generated.Using the standard definition of standard deviation (the square root ofthe arithmetic mean of the squares of the deviations from the arithmeticmean), the composer module 220 repeatedly calculates the standarddeviation of tempo values of all song files which are not assigned to alistening cycle and uses this calculated result to determine the tempovalue of the next track for possible inclusion in the listening cycle.

According to an embodiment of the invention, the process begins withgeneration of the first listening cycle of the collection. Initially,the tracks in the collection are arranged according to ascending TempoValue. For any songs that have the same Tempo Value, such songs arearranged alphabetically by Artist.

Each cycle, including the first cycle, starts with the song file notalready allocated to the playlist and having the lowest Tempo Value.This insures that each cycle will start with a song having a Tempo Valuethat is equal to or higher than—never lower than—that of the startingsong of the prior cycle. This promotes a general increase in averageTempo Value from one cycle to the next.

In an embodiment, for each iteration of placing a song file in aplaylist position, the composer module 220 determines the standarddeviation of Tempo Values of all song files which are not assigned to alistening cycle and uses a fraction of the standard deviation to computethe next preferred Tempo Value from the remaining song files. Thiscomputation consists of adding the appropriate fraction of the standarddeviation to the value of the last assigned song file's Tempo Valuewhich result is the next Tempo Value. The composer module 220 scans eachremaining song file for a Tempo Value match (+ or −10 BPM, for example)to the computed result. The fraction of the standard deviation to beused may vary. For example, for a 60 minute cycle, one sixth of thestandard deviation may be used. Alternatively, for a 30 minute cycle,one third of the standard deviation may be used.

A time modifier of Tempo Value may also be considered based on theElapsed Time within the cycle. The composer module 220 may use at leastthe following exemplary formula, expressed in scripting code, todetermine the next Tempo Value and subsequent track match to that TempoValue:

If(List Cycle=30, If(Round(BPM StDev/3, 0)>7 and Round(BPM StDev/3,0)<15, Round(BPM StDev/3, 0), If(Round(BPM StDev/2, 0)>7 and Round(BPMStDev/2, 0)<15, Round(BPM StDev/2, 0), Round(BPM StDev, 0))),If(Round(BPM StDev/6, 0)>3 and Round(BPM StDev/6, 0)<7, Round(BPMStDev/6, 0), If(Round(BPM StDev/5, 0)>3 and Round(BPM StDev/5, 0)<7,Round(BPM StDev/5, 0), Round(BPM StDev/4, 0)))) then

If (Right(Global Cycle, 1)≠Right(Cycle Auto, 1) or Global TempoValue>Lowest Point and Minute(Elapsed Time)≧00 and Minute(ElapsedTime)≦03 and Seconds(Elapsed Time)≦00 or Global Tempo Value>Lowest Pointand Minute(Elapsed Time)≧30 and Minute(Elapsed Time) and Seconds(ElapsedTime)≧00 and List Cycle=30) then set next BPM Tempo Value to the lowestBPM Tempo Value then continue to Search for Match

Else

If(Global Artist≠Artist and Global Song≠Song_Title and BPM≧Global TempoValue and BPM Global Tempo Value+If(Tempo Auto<5, Tempo Auto*3, TempoAuto*2) and Genre ID=Global Number1 or Global Artist≠Artist and GlobalSong≠Song_Title and BPM≧Global Tempo Value and BPM≦Tempo Value+BPM StDevand Genre ID=Global Number1 and Process Cycle>1

or Global Artist≠Artist and Global Song≠Song_Title and BPM≧Global TempoValue and BPM≦Global Tempo Value+BPM StDev and Current Genre=Genre_2 andProcess Cycle>1

or Global Artist≠Artist and Global Song≠Song_Title and BPM≧Global TempoValue and BPM Global Tempo Value+BPM StDev and Process Cycle=3 or ArtistCount=1 and Global Song≠Song_Title and BPM≧Global Tempo Value andBPM≦Global Tempo Value+If(Tempo Auto<5, Tempo Auto*3, Tempo Auto*2) andGenre ID=Global Number1 or Artist Count=1 and Global Song≠Song_Title andBPM≧Global Tempo Value and BPM≦Global Tempo Value+BPM StDev and GenreID=Global Number1 and Process Cycle>1 or Artist Count=1 and GlobalSong≠Song_Title and BPM≧Global Tempo Value and BPM≦Global TempoValue+BPM StDev and Current Genre=Genre_2 and Process Cycle>1 or ArtistCount=1 and Global Song≠Song_Title and BPM≧Global Tempo Value andBPM≦Global Tempo Value+BPM StDev and Process Cycle=3) then

If(BPM<Tempo Last and Minute(Elapsed Time)<59 and Minute(ElapsedTime)>33 or BPM<Tempo Last and Minute(Elapsed Time)<29 andMinute(Elapsed Time)>03) then a match was found and the matched songfile is assigned to the open position in the cycle.

In the event no match is found, in an embodiment, the composer module220 will set the next Tempo Value to the exact of the last Tempo Valueand search for a match (+ or −10 BPM, for example). If no match isfound, the composer module 220 will increment the next Tempo Value up bythe appropriate fraction of the standard deviation until a match isfound. If no match is found after 15 scans using the above formula, thenthe composer module 220 will assign the song file with the closest TempoValue match to the Tempo Value of the last song plus the appropriatefraction of the standard deviation to the next position in the cycle.

The benefit of this approach is to maintain a relative increase from thelowest Tempo Value in the cycle to the highest Tempo Value in the cycle.The composer module 220 repeats this process from one listening cycle toanother until the entire collection of song files has been positioned inthe appropriate play order.

Because each cycle starts with the remaining song having the lowestTempo Value, each subsequent cycle will start with a song having anequal Tempo Value or a higher Tempo Value than that of the prior cycle.Thus, the starting tempo and the average tempo from one cycle to thenext will increase. Also, because a fraction of the standard deviationis used to compute the next preferred tempo, the highest tempo reachedin any cycle will not be extreme compared to the starting tempo. Ofcourse, if desired, the listening cycles could be arranged to provide aprogressively descending overall tempo.

It should be noted that, while the composer module 220, in generatingthe playlist, takes into account the above-described artist and/or genregrouping preferences, other parameters could be used. For example, thetracks could be sorted according to other track characteristics, such aswhether the track has male vocals, female vocals, or any vocals at all(e.g., instrumentals).

If the composer module 220 has difficulty positioning a track, anindicator, such as a red “?” (not shown), may be placed near the track'slisting displayed in the GUI. The GUI allows the user to manuallyposition or remove a track if the composer module 220 places the trackin an undesirable position or can't place the track.

FIG. 6 illustrates a process 600 according to an embodiment of theinvention. The process 600 is illustrated as a set of operations shownas discrete blocks. The process 600 may be implemented in any suitablehardware, software, firmware, or combination thereof. The order in whichthe operations are described is not to be necessarily construed as alimitation.

At a block 610, the device 100 receives from a user via the userinterface a first user-perceived-attribute assignment corresponding to afirst value describing at least a portion of a first media program of aplurality of media programs. For example, the assignment may comprise aselection by the user of the “Relaxed” radio button associated with thepace menu 380 to indicate that the program in question has a relaxedpace. As described above, this selection of “Relaxed” has acorresponding numerical value of 5 BPM.

At a block 620, the device 100 receives from a user via the userinterface a second user-perceived-attribute assignment corresponding toa second value describing at least a portion of the first media program.For example, the assignment may comprise a selection by the user of the“Hot” radio button associated with the start menu 390 to indicate thatthe program in question has a strong beginning. As described above, thisselection of “Hot” has a corresponding numerical value of 7 BPM.

At a block 630, the device 100, based on the first and second values,calculates a third value. For example, the device 100, based onprofiling by the user, as described above, calculates a perceived BPMassociated with the program.

At a block 640, the device 100 associates the third value with the firstmedia program. For example, the device 100 may store the perceived BPMas a data field associated with the program.

The process performed in blocks may be performed with respect to asecond media program, as well as succeeding programs. As such, at ablock 650, the device 100, using, for example, the respective calculatedBPMs, generates a playlist comprising the first and second mediaprograms.

FIG. 7 illustrates a process 700 according to an embodiment of theinvention. The process 700 is illustrated as a set of operations shownas discrete blocks. The process 700 may be implemented in any suitablehardware, software, firmware, or combination thereof. The order in whichthe operations are described is not to be necessarily construed as alimitation.

At a block 710, a set of media programs is accessed. For example, thecomposer module 220 may access a collection of songs stored, forexample, in the memory 104. Alternatively, the accessed songs could bestored in, for example, a remote server (not shown) via a communicationconnection 112.

At a block 720, the composer module 220 creates a playlist first portionincluding a first plurality of the media programs of the set, theprograms of the first portion being arranged with respect to one anotheraccording to a respective first characteristic value of each of theprograms of the first portion. For example, the composer module 220 maygenerate a first playlist cycle in the manner described above.

At a block 730, the composer module 220 creates a playlist secondportion including a second plurality of the media programs of the set,the programs of the second portion being arranged with respect to oneanother according to the respective first characteristic value of eachof the programs of the second portion. For example, the composer module220 may generate a second playlist cycle in the manner described above.

At a block 740, the first and second portions may be played via theoutput device 116. For example, the second portion may be played afterthe first portion and presented via audio speakers.

The preceding discussion is presented to enable a person skilled in theart to make and use the invention. Various modifications to thedisclosed embodiments will be readily apparent to those skilled in theart, and the generic principles herein may be applied to otherembodiments and applications without departing from the spirit and scopeof the present invention. For example, the media programs profiled andplaced into playlists could be video files, as well. Thus, the presentinvention is not intended to be limited to the embodiments shown, but isto be accorded the widest scope consistent with the principles andfeatures disclosed herein.

1. In a computer system having at least one output device, a methodcomprising: accessing a set of media programs; creating a playlist firstportion comprising a first plurality of the media programs of the set,the programs of the first portion being arranged with respect to oneanother according to a respective first characteristic value of each ofthe programs of the first portion.
 2. The method of claim 1 wherein themedia programs each comprise audio content.
 3. The method of claim 1wherein at least a portion of the set is stored in the computer system.4. The method of claim 1 wherein the characteristic comprises tempo. 5.The method of claim 1 wherein at least one of the first characteristicvalues is determined from data received by the system from a user of thesystem.
 6. The method of claim 1 wherein at least one of the firstcharacteristic values is determined from data received by the systemover a network.
 7. The method of claim 1 wherein the programs arearranged according to ascending first characteristic value.
 8. Themethod of claim 1, further comprising creating a playlist second portioncomprising a second plurality of the media programs of the set, theprograms of the second portion being arranged with respect to oneanother according to the respective first characteristic value of eachof the programs of the second portion.
 9. The method of claim 8 whereinthe average of the first characteristic values of the second portionprograms is higher than the average of the first characteristic valuesof the first portion programs.
 10. The method of claim 1, furthercomprising playing, via the output device, the second portion after thefirst portion.
 11. The method of claim 1 wherein the first and secondportions are of equal duration.
 12. In a computer system having a userinterface, a method comprising: receiving from a user via the userinterface a first user-perceived-attribute assignment corresponding to afirst value describing at least a portion of a first media program of aplurality of media programs; receiving from the user via the userinterface a second user-perceived-attribute assignment corresponding toa second value describing at least a portion of the first media program;based on the first and second values, calculating a third value; andassociating the third value with the first media program.
 13. The methodof claim 12, further comprising associating a fourth value with a secondmedia program of the plurality; and based on the third and fourthvalues, generating a playlist comprising the first and second mediaprograms.
 14. The method of claim 13, further comprising: receiving fromthe user via the user interface a third user-perceived-attributeassignment corresponding to a fifth value describing at least a portionof the second media program; receiving from the user via the userinterface a fourth user-perceived-attribute assignment corresponding toa sixth value describing at least a portion of the second media program;and based on the fifth and sixth value assignments, calculating thefourth value.
 15. The method of claim 12 wherein the first attributeassignment comprises a textual description.
 16. The method of claim 12wherein the portion described by the first value comprises at least oneof a group including start, end, tempo and pace.
 17. The method of claim12 wherein the third value comprises an estimate of the beats per minuteof the media program as perceived by the user.
 18. The method of claim12 wherein the third value is calculated by adding the first and secondvalues.
 19. An article of manufacture, comprising: a computer-readablemedium having computer-executable instructions embodied thereon to:access a set of media programs; create a playlist first portioncomprising a first plurality of the media programs of the set, theprograms of the first portion being arranged with respect to one anotheraccording to a respective first characteristic value of each of theprograms of the first portion.
 20. The article of claim 19 wherein themedium comprises a modulated data signal.